{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Trying to predict number of COVID-19 tests by August 1st 2020\n",
    "*Notebook by Steven Rybicki*\n",
    "\n",
    "In this notebook, we'll be focusing on trying to predict the number of COVID-19 tests in the US. Namely, we'll be looking at forecasting the answer to:\n",
    "> By August 1, how many tests for COVID-19 will have been administered in the US?\n",
    "\n",
    "taken from the [Metaculus question](https://pandemic.metaculus.com/questions/4400/by-august-1-how-many-tests-for-covid-19-will-have-been-administered-in-the-us/). This just looks at number of tests, not distinguishing by type or if someone is tested multiple times.\n",
    "\n",
    "To do this, we're going to be using [Ergo](https://github.com/oughtinc/ergo), a library by [Ought](https://ought.org/). This lets you integrate model based forecasting (building up a numerical model to predict outcomes) with judgement based forecasting (using calibration to predict outcomes less formally). To see other notebooks using Ergo, see [the Ergo repo](https://github.com/oughtinc/ergo/tree/master/notebooks). \n",
    "\n",
    "I'll be trying to walk through how you'd use this realistically if you wanted to forecast the answer to a question without investing a lot of time on exploration. This means our model will be kind of rough, but hopefully accurate enough to provide value, and I'll be iteratively trying to improve it as we go along. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Notebook setup\n",
    "\n",
    "This imports libraries, and sets up some useful functions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "%%capture\n",
    "!pip install --progress-bar off poetry\n",
    "!pip install --progress-bar off git+https://github.com/oughtinc/ergo.git@e9f6463de652f4e15d7c9ab0bb9f067fef8847f7"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "import warnings\n",
    "import ssl\n",
    "warnings.filterwarnings(action=\"ignore\", category=FutureWarning)\n",
    "warnings.filterwarnings(action=\"ignore\", module=\"plotnine\")\n",
    "ssl._create_default_https_context = ssl._create_unverified_context"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "import ergo\n",
    "import seaborn\n",
    "\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from datetime import timedelta, date, datetime\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "pd.set_option('precision', 2)\n",
    "\n",
    "def summarize_samples(samples):\n",
    "    \"\"\"\n",
    "    Print out the p5, p50 and p95 of the given sample\n",
    "    \"\"\"\n",
    "    stats = samples.describe(percentiles=[0.05, 0.5, 0.95])\n",
    "    percentile = lambda pt: float(stats.loc[f\"{pt}%\"])\n",
    "    return f\"{percentile(50):.2f} ({percentile(5):.2f} to {percentile(95):.2f})\"\n",
    "\n",
    "def show_marginal(func):\n",
    "    \"\"\"\n",
    "    Use Ergo to generate 1000 samples of the distribution of func, and then plot them as a distribution. \n",
    "    \"\"\"\n",
    "    samples = ergo.run(func, num_samples=1000)[\"output\"]\n",
    "    seaborn.distplot(samples).set_title(func.__doc__);\n",
    "    plt.show()\n",
    "    print(f\"Median {func.__doc__}: {summarize_samples(samples)}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# How are we going to predict this?\n",
    "\n",
    "## Principles\n",
    "\n",
    "Here's a couple things we're going to try to do when predicting this:\n",
    "\n",
    "- *fermi estimate / decomposition*: focus on decomposing the question into multiple parts that we can estimate separately. We'll start with our overall question (how many tests) and decompose it into smaller questions that are easier to predict (e.g. what's the estimated number of tests we will make tomorrow?).\n",
    "- *use live data*: where possible, fetch data from an up to date source. This lets us easily update our guess, as we can just rerun the notebook and it will update our prediction based on updated data. \n",
    "- *wisdom of the crowds*: incorporate other predictions, namely the [Metaculus one](https://pandemic.metaculus.com/questions/4400/by-august-1-how-many-tests-for-covid-19-will-have-been-administered-in-the-us/), so we can include information we might have missed.\n",
    "\n",
    "## Question decomposition\n",
    "\n",
    "Let's decompose our question into a number of sub questions. We'll then focus on trying to estimate each of these separately, allowing us to iteratively improve our model as we go along.\n",
    "\n",
    "So the number of tests done by August 1st could be decomposed as:\n",
    " - ensemble prediction of:\n",
    "     - my prediction\n",
    "        - current number of tests done to date: how many tests have we done up until today?\n",
    "        - how much we can expect that number to change until August 1st?\n",
    "            - if current rates remain unchanged, what will that number be in August?\n",
    "            - what change in testing rates should we expect based on past changes?\n",
    "            - what will be the impact of future factors on testing rates?\n",
    "     - metaculus question "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# My Prediction\n",
    "\n",
    "## Get relevant data\n",
    "\n",
    "To know the current testing rate, and how it changes, we're going to use the https://covidtracking.com/ API to fetch the testing statistics. To make it easier to parse, we're going to filter to the fields we care about:\n",
    "- date\n",
    "- totalTestResults: culmulative tests per day\n",
    "- totalTestResultsIncrease: how many new test results were reported that day"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>date</th>\n",
       "      <th>totalTestResults</th>\n",
       "      <th>totalTestResultsIncrease</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2020-06-04</td>\n",
       "      <td>18680529</td>\n",
       "      <td>465579</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2020-06-03</td>\n",
       "      <td>18214950</td>\n",
       "      <td>457112</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2020-06-02</td>\n",
       "      <td>17757838</td>\n",
       "      <td>417156</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2020-06-01</td>\n",
       "      <td>17340682</td>\n",
       "      <td>403791</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2020-05-31</td>\n",
       "      <td>16936891</td>\n",
       "      <td>406206</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>130</th>\n",
       "      <td>2020-01-26</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>131</th>\n",
       "      <td>2020-01-25</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>132</th>\n",
       "      <td>2020-01-24</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>133</th>\n",
       "      <td>2020-01-23</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>134</th>\n",
       "      <td>2020-01-22</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>135 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "          date  totalTestResults  totalTestResultsIncrease\n",
       "0   2020-06-04          18680529                    465579\n",
       "1   2020-06-03          18214950                    457112\n",
       "2   2020-06-02          17757838                    417156\n",
       "3   2020-06-01          17340682                    403791\n",
       "4   2020-05-31          16936891                    406206\n",
       "..         ...               ...                       ...\n",
       "130 2020-01-26                 1                         0\n",
       "131 2020-01-25                 1                         0\n",
       "132 2020-01-24                 1                         0\n",
       "133 2020-01-23                 1                         0\n",
       "134 2020-01-22                 1                         0\n",
       "\n",
       "[135 rows x 3 columns]"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "testing_data = pd.read_csv(\"https://covidtracking.com/api/v1/us/daily.csv\")\n",
    "# testing data uses numbers for dates (20200531 for e.g.), so let's convert that to use python dates instead\n",
    "testing_data[\"date\"] = testing_data[\"date\"].apply(lambda d: datetime.strptime(str(d),  \"%Y%m%d\"))\n",
    "\n",
    "# now filter just to the columns we care about\n",
    "testing_data = testing_data[[\"date\", \"totalTestResults\", \"totalTestResultsIncrease\"]]\n",
    "testing_data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Current number of tests\n",
    "\n",
    "We can now use our dataset to easily find the number of tests done today (or the latest in the dataset), which we can verify is correct by looking at the table above"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(Timestamp('2020-06-04 00:00:00'), 18680529)"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# pick the largest, therefore most up to date, date\n",
    "current_date = testing_data[\"date\"].max()\n",
    "\n",
    "# if there's multiple entries for a day for whatever reason, take the first\n",
    "current_test_number = testing_data.loc[testing_data[\"date\"] == current_date][\"totalTestResults\"][0]\n",
    "\n",
    "current_date, current_test_number"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## How much can we expect this to change until August 1st?\n",
    "\n",
    "We now want to predict how many new tests we can expect from now until August 1st. One easy way to do this:\n",
    "- look at the distribution of new tests per day over the last month\n",
    "- if we simulate what happens if we continue like this until August 1st, what distribution do we expect?\n",
    "\n",
    "### Distribution of tests over the past month\n",
    "\n",
    "First, let's look at the `totalTestResultsIncrease` over the past month."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f3c3446a5c0>"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "last_month = current_date - timedelta(days=30)\n",
    "test_data_over_last_month = testing_data[testing_data['date'].between(last_month, current_date)]\n",
    "\n",
    "\n",
    "seaborn.distplot(test_data_over_last_month[\"totalTestResultsIncrease\"])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now, we want to use this to help build a model. Since we're using Ergo, this is easy: we just create a function that represents this field, which returns a random sample from the dataset. Then, to simulate the distribution of this field, we can sample from this function a large number of times. This is what the `show_marginal` function does, as well as plotting the resulting distribution."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "b9b45eb7e7ac4685a82c1b4573b04768",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "HBox(children=(FloatProgress(value=0.0, max=1000.0), HTML(value='')))"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Median # test results per day: 378908.00 (260818.00 to 465579.00)\n"
     ]
    }
   ],
   "source": [
    "def test_results_increase_per_day():\n",
    "    \"# test results per day\"\n",
    "    return ergo.random_choice(list(test_data_over_last_month[\"totalTestResultsIncrease\"]))\n",
    "\n",
    "show_marginal(test_results_increase_per_day)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As a sanity check, this distribution looks very similar as plotting the distribution above, which makes sense as they should be equivalent since the above is just randomly sampling from the original.\n",
    "\n",
    "Right now, this isn't especially useful: we've just created a similar distribution to one we had originally. But now that we've created this in Ergo, it becomes easy to manipulate and combine this with other distributions. We'll be doing this to extrapolate how many tests we can expect by August."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## How much we can expect that to increase by August 1st?\n",
    "\n",
    "### Repeating our current rates\n",
    "Now, using our new `test_results_increase_per_day` function, can we extrapolate what the number of tests tomorrow could look like? One way to do this: \n",
    "- look at test results today, `current_test_number`\n",
    "- sample from our `test_results_increase_per_day` distribution, add it to how many we have so far\n",
    "\n",
    "Since `test_results_increase_per_day` returns a sample from this distribution, this just looks like adding `current_test_number` to `test_results_increase_per_day`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "8516db5738554075bdbb7229628b2a1a",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "HBox(children=(FloatProgress(value=0.0, max=1000.0), HTML(value='')))"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Median # test results tomorrow: 19059437.00 (18941347.00 to 19146108.00)\n"
     ]
    }
   ],
   "source": [
    "def test_results_tomorrow():\n",
    "    \"# test results tomorrow\"\n",
    "    return current_test_number + test_results_increase_per_day()\n",
    "\n",
    "show_marginal(test_results_tomorrow)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Can we extend this to extrapolate further in the future? One simple way to do this (which we'll refine later): call `test_results_increase_per_day()` for each day in the future we want to forecast, and add them together. We could also just do `totalTestResultsIncrease() * number_of_days`, but this approach lets us sample more points and better approximate the potential increase. \n",
    "\n",
    "To verify this is working in a sensible way, let's test it for tomorrow:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "dfe92a6cef124c97a0a6fd64ea77e19f",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "HBox(children=(FloatProgress(value=0.0, max=1000.0), HTML(value='')))"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Median # test results tomorrow using test_results_for_date: 19059437.00 (18941347.00 to 19146108.00)\n"
     ]
    }
   ],
   "source": [
    "def test_results_for_date(date: datetime):\n",
    "    number_of_days = (date - current_date).days\n",
    "    return current_test_number + sum(test_results_increase_per_day() for _ in range(number_of_days))\n",
    "\n",
    "def test_results_for_date_tomorrow():\n",
    "    \"# test results tomorrow using test_results_for_date\"\n",
    "    return test_results_for_date(current_date + timedelta(days=1))\n",
    "\n",
    "show_marginal(test_results_for_date_tomorrow)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "At least in my notebook, these show the exact same answer. So, now, if we want to predict for August, we can just change the date given."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "84150f77890c48f487afebbe9ade202f",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "HBox(children=(FloatProgress(value=0.0, max=1000.0), HTML(value='')))"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Median # test results for August 1st: 39989634.00 (39169525.80 to 40737715.40)\n"
     ]
    }
   ],
   "source": [
    "def test_results_for_deadline():\n",
    "    \"# test results for August 1st\"\n",
    "    return test_results_for_date(datetime(2020, 8, 1))\n",
    "\n",
    "show_marginal(test_results_for_deadline)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note that with Ergo, we can just use normal python operators and functions (`+, sum`) to sample from `test_results_increase_per_day()` and create this new distribution `test_results_for_date`. This lets us focus on building our model, and not have to worry about the math of combining distributions."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### What change in testing rates should we expect based on past changes?\n",
    "\n",
    "The above analysis assumes that number of tests per day is not increasing, as if it is we'll be underestimating. Let's validate that, and look at how the number of tests has changed over time."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f3ca1f54828>"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# create a days column, since that will help us make the x-axis look cleaner \n",
    "# (dates overlap with a smaller graph)\n",
    "first_date = testing_data[\"date\"].min()\n",
    "testing_data[\"days\"] = \\\n",
    "    testing_data[\"date\"].apply(lambda d: (d - first_date).days)\n",
    "\n",
    "seaborn.lineplot(x=\"days\", y=\"totalTestResultsIncrease\", data=testing_data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "So we can see that roughly, month over month, the number of tests per day are increasing linearly. This means that our `test_results_for_deadline()` model above is probably underestimating the number of tests, as it's assuming the testing capacity remains static. \n",
    "\n",
    "What we want is to estimate the day over day increase, and use that to increase the number of tests our model is adding per day. Since it looks very linear right now, let's use a linear regression to estimate the slope of increases. We'll look at data when we past 100 000 cases, as that's where the trend seems to become linear."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5237.6744647757305"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# ignore early testing data, as it was mostly zero, then growing exponentially\n",
    "test_data_worth_looking_at = testing_data[testing_data['totalTestResults'] >= 100000]\n",
    "\n",
    "# do a linear regression using scipy\n",
    "from scipy import stats\n",
    "slope_of_test_increases = stats.linregress(test_data_worth_looking_at[\"days\"], test_data_worth_looking_at[\"totalTestResultsIncrease\"]).slope\n",
    "\n",
    "slope_of_test_increases"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now, with this in hand, we can modify our previous estimate by using this slope. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "ed003840dc9c4c5688df5092fc0969c9",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "HBox(children=(FloatProgress(value=0.0, max=1000.0), HTML(value='')))"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Median # test results for August 1st with linear increase in tests: 48664404.89 (47836028.49 to 49398034.94)\n"
     ]
    }
   ],
   "source": [
    "def test_results_for_date_with_slope(date: datetime):\n",
    "    number_of_days = (date - current_date).days\n",
    "    return current_test_number + sum(test_results_increase_per_day() + slope_of_test_increases * day for day in range(number_of_days))\n",
    "\n",
    "\n",
    "def test_results_for_deadline_with_slope():\n",
    "    \"# test results for August 1st with linear increase in tests\"\n",
    "    return test_results_for_date_with_slope(datetime(2020, 8, 1))\n",
    "\n",
    "show_marginal(test_results_for_deadline_with_slope)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### What will be the impact of future factors on testing rates?\n",
    "Right now, our model is potentially a bit too overconfident. Testing might not increase linearly at this rate forever:\n",
    "- we might increase testing rate, because of:\n",
    "    - changes in testing policy to increase number of tests\n",
    "    - outbreaks that intensify in regions\n",
    "    - tests that are cheaper \n",
    "    - more infrastructure to deploy tests\n",
    "    - etc.\n",
    "- we might decrease testing rate, because of:\n",
    "    - changes in testing policy to decrease the number of tests, to try understate the impact of the disease\n",
    "    - containment strategies working well\n",
    "    - hitting capacity limits on test manufacture\n",
    "    - not being able to import any tests due to shortages in other countries\n",
    "    - etc.\n",
    "\n",
    "We could go down the rabbit hole of trying to predict each of these, but that would take a ton of time, and not necessarily change the prediction much. The cheaper time-wise thing to do is to try estimate how much we expect testing rates to change in the future. This is using the judgement based forecasting we mentioned above. \n",
    "\n",
    "I'm going to guess that linear growth is still possible until August, but that it could be anything from 0.25 to 2 current growth per day. we're going to approximate this with a lognormal distribution, as we think that the most likely rate is around 1, but don't want to discount values at the tails."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "d1cc6a0742ce475eb9f316406f146e0e",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "HBox(children=(FloatProgress(value=0.0, max=1000.0), HTML(value='')))"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Median # estimated slope: 5356.55 (2637.93 to 10690.27)\n"
     ]
    }
   ],
   "source": [
    "def estimated_slope():\n",
    "    \"# estimated slope\"\n",
    "    return ergo.lognormal_from_interval(0.5, 2) * slope_of_test_increases\n",
    "\n",
    "show_marginal(estimated_slope)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we can adapt our previous model, just using this estimated slope instead. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "358a99879e114e068f091a9a030a9937",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "HBox(children=(FloatProgress(value=0.0, max=1000.0), HTML(value='')))"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Median # test results for August 1st with linear increase in tests: 49389424.00 (48075257.00 to 50791163.00)\n"
     ]
    }
   ],
   "source": [
    "def test_results_for_date_with_slope(date: datetime):\n",
    "    # The slightly more correct way of doing this would be to replace estimated_slope() * day with repeated calls\n",
    "    # to estimated_slope. But as we're predicing kind of far into the future, this makes the simulation really slow.\n",
    "    number_of_days = (date - current_date).days\n",
    "    return current_test_number + sum(test_results_increase_per_day() + estimated_slope() * day for day in range(number_of_days))\n",
    "\n",
    "\n",
    "def test_results_for_deadline_with_slope():\n",
    "    \"# test results for August 1st with linear increase in tests\"\n",
    "    return test_results_for_date_with_slope(datetime(2020, 8, 1))\n",
    "\n",
    "show_marginal(test_results_for_deadline_with_slope)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Incorporating the Metaculus prediction\n",
    "\n",
    "Now that we have our own prediction, let's look at the Metaculus one. This will give us a sense of how our model stacks up to their community's model, and is a good sanity check to see if we missed something obvious. If you're running this notebook, remember to replace the credentials below with your own."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "metaculus = ergo.Metaculus(username=\"oughtpublic\", password=\"123456\", api_domain=\"pandemic\")\n",
    "testing_question = metaculus.get_question(4400, name=\"# tests administered\")\n",
    "testing_question.show_community_prediction()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This is similar to our prediction, just less certain (longer tails) and centered slightly higher. Since we think they have valuable information we might have missed, we're going to create a simple essemble prediction: pick randomly between a prediction the Metaculus community would make, and we would make, to create a combined model.\n",
    "\n",
    "Seaborn at time of writing has difficult plotting a distribution plot for this, because of some large outliers in the sample, so let's use a boxplot instead. This also helps show how to use Ergo outside of our `show_marginal` function."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "4a44274343964ae5b1742398f2b48fa5",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "HBox(children=(FloatProgress(value=0.0, max=1000.0), HTML(value='')))"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Median: 49356438.00 (33679320.00 to 88160416.00)\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWAAAAEGCAYAAABbzE8LAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAMoUlEQVR4nO3da4xcdRnH8d9vL1aKBEhbSbiEIa6BEBWRjSKIIaUk25TgDVPxQtcQeIGWFiUGzL4wZEVjiNWsNxCxbSSYWDESY1fBovDCAFtgKZTbBpa7UNagWIx0u48v5rTbLnRnZztnnmn3+0lIp7Mz///DyeyX6dnOwREhAEDztWUPAABzFQEGgCQEGACSEGAASEKAASBJRz0PXrhwYVQqlZJGAYCD0+bNm1+NiEVT768rwJVKRUNDQ42bCgDmANvPvN39nIIAgCQEGACSEGAASEKAASAJAQaAJAQYAJIQYABIQoABIAkBBoAkBBgAkhBgAEhCgAEgCQEGgCQEGACSEGAASEKAASAJAQaAJAQYAJIQYABI0tQADwwMaGBgoJlbAkDLamqABwcHNTg42MwtAaBlcQoCAJIQYABIQoABIAkBBoAkBBgAkhBgAEhCgAEgCQEGgCQEGACSEGAASEKAASAJAQaAJAQYAJIQYABIQoABIAkBBoAkBBgAkhBgAEhCgAEgCQEGgCQEGACSEGAASEKAASAJAQaAJAQYAJIQYABIQoABIAkBBoAkBBgAkhBgAEhCgAEgCQEGgCQEGACSEGAASEKAASAJAQaAJAQYAJIQYABIQoABIAkBBoAkBBgAkhBgAEjS0ayNBgYG9MYbb6i9vb1ZWwJAS2vaO+CRkRFFhCYmJpq1JQC0NE5BAEASAgwASQgwACQhwACQhAADQBICDABJCDAAJCHAAJCEAANAEgIMAEkIMAAkIcAAkIQAA0ASAgwASQgwACQhwACQhAADQBICDABJCDAAJCHAAJCEAANAEgIMAEkIMAAkIcAAkIQAA0ASAgwASQgwACQhwACQhAADQBICDABJCDAAJCHAAJCEAANAEgIMAEkIMAAkIcAAkIQAA0ASAgwASZoS4N7eXg0PD0uSJiYmdPbZZ+/+Z/ny5br00kt1ySWX6LLLLtOmTZu0ePFi3XbbbVq2bJlGRkZ2rzM2NqbLL79cY2Njs56l1hr17tGImWqtuz97TH1uo+ZtleMElK3M125TAjw6OrrPr7388st64okn9OSTT2rr1q269tprNTExoTVr1mj79u3q7+/f/dh169Zpy5YtWr9+/axnqbVGvXs0YqZa6+7PHlOf26h5W+U4AWUr87VbeoB7e3vrevz4+LgkKSIkVeM9MjKisbExDQ4OKiI0ODg463eD061R7x6NmKnWuhs3bpz1HlPnGxkZaci8rXKcgLKV/dotPcDTvfudqf7+fq1bt04TExOSpJ07d8763eB0a9S7RyNmqrXujh07tGPHjlntMXW+/v7+hszbKscJKFvZr92aAbZ9qe0h20Pbtm1r6OYzNTo6qjvuuGP3u+Px8XHdfvvtda9Ta41692jETLXWjYjdfxqod4+p842OjjZk3lY5TkDZyn7t1gxwRNwQEd0R0b1o0aKGbj5TlUpFS5YsUUdHhySpo6ND5557bt3r1Fqj3j0aMVOtdW3L9qz2mDpfpVJpyLytcpyAspX92i39FESlUtnvNfr6+rRixQq1tVXHbW9v10UXXVT3OrXWqHePRsxUa93Ozk51dnbOao+p8/X19TVk3lY5TkDZyn7tlh7gtWvX1vX4Pd/5SdWAd3V1acGCBerp6ZFt9fT0aMGCBXXPUmuNevdoxEy11l26dOms95g6X1dXV0PmbZXjBJSt7NduR0NX24dKpbLPH8YdddRROvzwwxUR6uzs1AUXXKD+/n6tXr1a119/vfr6+nY/dsWKFRodHd2v/wrVWqPePRox00zWne0eU9dp1LytcpyAspX52vWuH/DMRHd3dwwNDc1qo1WrVml4eFhtbW3atGnTrNYAgAOR7c0R0T31fj6KDABJCDAAJCHAAJCEAANAEgIMAEkIMAAkIcAAkIQAA0ASAgwASQgwACQhwACQhAADQBICDABJCDAAJCHAAJCEAANAEgIMAEkIMAAkIcAAkIQAA0ASAgwASQgwACQhwACQhAADQBICDABJCDAAJCHAAJCEAANAEgIMAEkIMAAkIcAAkIQAA0ASAgwASQgwACQhwACQhAADQBICDABJCDAAJGlagLu6umRbbW00HwCkJgZ45cqVmj9/vubNm9esLQGgpfF2FACSEGAASEKAASAJAQaAJAQYAJIQYABIQoABIAkBBoAkBBgAkhBgAEhCgAEgCQEGgCQEGACSEGAASEKAASAJ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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def ensemble_prediction():\n",
    "    \"# ensemble prediction\"\n",
    "    if ergo.flip(0.5):\n",
    "        return testing_question.sample_community()\n",
    "    else:\n",
    "        return test_results_for_deadline_with_slope()\n",
    "\n",
    "# use ergo to create a distribution from 1000 samples, using our ensemble prediction\n",
    "# this is output as a pandas dataframe, making it easy to plot and manipulate\n",
    "samples = ergo.run(ensemble_prediction, num_samples=1000)[\"output\"]\n",
    "\n",
    "# show them as a box plot\n",
    "seaborn.boxplot(samples)\n",
    "print(\"Median:\", summarize_samples(samples))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This shows a distribution similar to the one we had, just less certain, and with some probability for the long tails. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Submitting to metaculus\n",
    "\n",
    "If we want to, we can now submit this model to Metaculus."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "# below commented out to avoid accidentally submitting an answer when you don't mean to\n",
    "# samples = ergo.run(ensemble_prediction, num_samples=1000)[\"output\"]\n",
    "# testing_question.submit_from_samples(samples)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Summary\n",
    "To create this model, we did the following:\n",
    "- we fetched the latest data from https://covidtracking.com/\n",
    "- estimated the growth of the number of tests to be a combination of the past linear growth, and a log-normal distribution\n",
    "- used that to extrapolate the number of tests we'd have in August\n",
    "- then combined that prediction with the metaculus prediction, to create a final forecast for number of tests on August 1st\n",
    "\n",
    "Since we did a lot of iteration on our model, I'm including a cleaned up version of the entire thing below, so you can see everything at once."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "c5f09bc0f1e14488ae8b8a7f58a76aeb",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "HBox(children=(FloatProgress(value=0.0, max=1000.0), HTML(value='')))"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Median # ensemble prediction: 49363570.00 (28038922.00 to 84211824.00)\n"
     ]
    }
   ],
   "source": [
    "class Covid19TestsModel(object):\n",
    "    def __init__(self, testing_data, testing_question):\n",
    "        self.testing_data = testing_data\n",
    "        self.testing_question = testing_question\n",
    "\n",
    "        self.last_month = current_date - timedelta(days=30)\n",
    "        self.current_date = testing_data[\"date\"].max()\n",
    "        # if there's multiple entries for a day for whatever reason, take the first\n",
    "        self.current_test_number = testing_data.loc[testing_data[\"date\"] == current_date][\"totalTestResults\"][0]\n",
    "        \n",
    "        # data subsets\n",
    "        self.test_data_over_last_month = self.testing_data[testing_data['date'].between(last_month, current_date)]\n",
    "\n",
    "        # calculate slope\n",
    "        test_data_worth_looking_at = testing_data[testing_data['totalTestResults'] >= 100000]\n",
    "        self.slope_of_test_increases = stats.linregress(\n",
    "            test_data_worth_looking_at[\"days\"], \n",
    "            test_data_worth_looking_at[\"totalTestResultsIncrease\"]).slope\n",
    "        \n",
    "    def test_results_increase_per_day(self):\n",
    "        \"\"\"\n",
    "        Estimated test increase over the past day looking at increases over the last month\n",
    "        \"\"\"\n",
    "        return ergo.random_choice(list(self.test_data_over_last_month[\"totalTestResultsIncrease\"]))\n",
    "    \n",
    "    def estimated_slope(self):\n",
    "        \"\"\"\n",
    "        Estimated slope of increase of tests per day looking at linear regression of test cases,\n",
    "        and a log-normal prediction of the possible changes\n",
    "        \"\"\"\n",
    "        return ergo.lognormal_from_interval(0.5, 2) * self.slope_of_test_increases\n",
    "    \n",
    "    def test_results_for_date_with_slope(self, date: datetime):\n",
    "        \"\"\"\n",
    "        Estimated test results for date, estimating based on the number of estimated test results per day\n",
    "        including the estimated rate of increase\n",
    "        \"\"\"\n",
    "        number_of_days = (date - self.current_date).days\n",
    "        return self.current_test_number + \\\n",
    "            sum(self.test_results_increase_per_day() + self.estimated_slope() * day for day in range(number_of_days))\n",
    "\n",
    "\n",
    "    def test_results_for_deadline_with_slope(self):\n",
    "        return self.test_results_for_date_with_slope(datetime(2020, 8, 1))\n",
    "    \n",
    "    def ensemble_prediction(self):\n",
    "        \"# ensemble prediction\"\n",
    "        if ergo.flip(0.5):\n",
    "            return self.testing_question.sample_community()\n",
    "        else:\n",
    "            return self.test_results_for_deadline_with_slope()\n",
    "\n",
    "show_marginal(Covid19TestsModel(testing_data, testing_question).ensemble_prediction)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This hopefully shows why I like Ergo: most of the code above is setting up the data. The actual building of the model, both extrapolating from the data and incorporating my estimates, is pretty succinct and (hopefully) simple.\n",
    "\n",
    "If you want to make your own models, see the [Ergo repo](https://github.com/oughtinc/ergo) for instructions on how ot get started, or just look at [some existing notebooks](https://github.com/oughtinc/ergo/tree/master/notebooks). "
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
